<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  // 是js的一个内置对象，提供了一些方法，可以让开发者通过调用这些方法访问一些js的底层
  // 属性的取赋值
  // Object.freeze() 冻结不可修改
  const obj = {
    a: 1
  }

  // obj.a = 2
  Reflect.set(obj, 'a', 10)
  console.log(Reflect.get(obj, 'a'))

  // 调用函数
  function fn(a, b) {
    console.log(a + b, this.a);
  }
  // fn(4, 5)//9 undefined
  //指定this指向
  Reflect.apply(fn, obj, [4, 5])//9 10

  // 删除属性
  Reflect.deleteProperty(obj, 'a')
  console.log(obj)

  // 调用构造函数
  function Text(a, b) {
    this.a = a
    this.b = b
  }
  let t = Reflect.construct(Text, [2, 3])

  // 查询 .has()
  console.log(Reflect.has(obj, 'a'))//false
</script>

</html>